Personal computer systems in general, and IBM personal computers in particular, have attained widespread use for providing computer power to many segments of today's society. A personal computer system can usually be defined as a desk top, floor standing, or portable computer that includes a system unit having a system processor, a display monitor, a keyboard, one or more diskette drives, a fixed disk storage, an optional pointing device such as a "mouse," and an optional printer. These systems are designed primarily to give independent computing power to a single user or small group of users and are inexpensively priced for purchase by individuals or businesses.
Personal computer systems may be linked to form a network of computers (e.g., a Local Area Network (LAN)) so that users can exchange information, share I/O devices, and utilize a particular direct access storage device (DASD) such as a particular hardfile or diskette. Typically, the LAN includes a client and a server. A server is a computer system which includes a DASD for supplying the storage for one or more clients of the local area network.
With personal computers, software and hardware compatibility is of great importance. To provide software and hardware compatibility, an insulation layer of system resident code, also referred to as microcode, was established between the hardware and the software. This code provided an operational interface between a user's application program or operating system and the hardware device to relieve the user of the concern about the characteristics of hardware devices. Eventually, the code developed into a basic input/output system (BIOS), for allowing new hardware devices to be added to the system, while insulating the application program/operating system from the peculiarities of the hardware devices. The importance of BIOS was immediately evident because it freed a device driver from depending on specific hardware device characteristics while providing the device driver with an intermediate interface to the hardware device. Because BIOS was an integral part of the computer system and controlled the movement of data in and out of the system processor, it was resident on a system planar board of the system unit and was shipped to the user in either a read-only memory (ROM) or an erasable programmable read-only memory (EPROM). The ROM also contained a power-on self test (POST) program which was used to test and initialize the computer system. The accumulation of code resident in the computer system ROM became known as the "system firmware," or simply "firmware." Thus, the firmware included a POST portion and a BIOS portion. Sometimes, BIOS was defined to include the POST program.
The POST program tests and initializes the personal computer system. The completion of POST occurs when POST loads a boot program and transfers control to the boot program. The boot program is typically loaded from a storage device such as a disk. In prior art systems, before POST transfers control to the boot program, POST checks the boot program. As shown in "Technical Reference Personal Computer XT", January 1983, page A-90 Fixed Disk BIOS, program line 482, the boot program is checked for a generic boot block signature. The generic boot block signature is shown as a word hex value of 0AA55. The "Technical Reference Personal Computer XT" is hereby incorporated herein by reference. Additional checks where added as described in "Technical Reference Personal Computer AT", Nov. 15, 1985 update, page 5-88, program lines 375-387. The additional checks in the IBM Personal Computer AT POST included insuring that the first value of the boot program was not "6", and that the first eight word location values of the boot program were not identical. The "Technical Reference Personal Computer AT", Nov. 15, 1985 update version is hereby included herein by reference. POST attempted to check and verify the boot program using the above described techniques as were available at the time.
It is easily seen that the entirety of the boot program is not checked. The boot program is an essential part of the overall startup of a computer system and thus requires a more rigorous check and verification procedure.